<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="app">
        <p>{{count}}</p>
        <p>
            <button @click="count++">count++</button>
        </p>

    </div>
</body>
<script>


    // Vue实例的方法  -> 自定义事件
    // app.$on(event,callback)      绑定自定义事件
    // event => 自定义事件的名称
    // callback  => 事件触发时执行的回调函数,回调函数可以接收一个参数(新参)

    // app.$once(event,callback)    绑定自定义事件(执行一次后就会被清除)
    // app.$off(event,callback)     清除自定义事件(对应函数引用)

    // app.$emit(event,params)      触发自定义事件 (触发事件时可以传入参数)

    var app = new Vue({
        el: "#app",
        data() {
            return {
                count: 1,
            }
        },
        mounted() {
            console.log("Vue实例", this);


            // console.log(a = 1);  // a = 1, log(a)


            let a, b, c;


            // 绑定自定义事件
            this.$on("abc", a = function (arg) {
                console.log("自定义事件abc被触发了:1", arg);
            })
            this.$on("abc", b = function (arg) {
                console.log("自定义事件abc被触发了:2", arg);
            })
            this.$once("abc", c = function (arg) {
                console.log("自定义事件abc被触发了:3", arg);
            })

            // 触发自定义事件
            // this.$emit("abc", 10);
            // this.$emit("abc", 10);


            // 清除自定义事件
            this.$off("abc", a);
            this.$off("abc", b);
            this.$off("abc", c);

            this.$emit("abc", 10);



        },
    })




</script>

</html>